Ext.require(['*']);

Ext.define('modelProyectos', {
	extend: 'Ext.data.Model',
	proxy : {
		type : 'ajax',
		//actionMethods : 'POST',
		//url : '/roles', //application/controllers/Habitacion.php
		
		api: {
			read: '/proyectos/view',
			create: '/proyectos/create',
			save: '/proyectos/update',
			destroy: '/proyectos/destroy'
		},
	
		reader: {	
			type: 'json',
			successProperty: 'success',
			root: 'proyectos',
			messageProperty: 'message'
        },
		writer: {
			type: 'json',
			writeAllFields: false,
			root: 'proyecto'
		},
		
	},
	
	fields: [
		{type: 'int' , name: 'idProyecto'},
		{type: 'string', name: 'nombreProyecto'},
		{type: 'string', name: 'descripProyecto'},
		{type: 'string', name: 'fecIniProyecto'},
		{type: 'string', name: 'estado'}
	]
});

Ext.define('modelUsuarios', {
	extend: 'Ext.data.Model',
	proxy : {
		type : 'ajax',
		//actionMethods : 'POST',
		url : '/usuarios/view', //application/controllers/Habitacion.php
		
		api: {
                read: '/usuarios/view',
                create: '/usuarios/create',
                save: '/usuarios/update',
                destroy: '/usuarios/destroy'
		},
	
		reader: {
				
                type: 'json',
                idProperty: 'id',
                root: 'usuarios',
                totalProperty: 'totalUsuarios'
        }
	},
	fields: [
		{type: 'int' , name: 'id'},
		{type: 'string', name: 'username'},
		{type: 'string', name: 'nombre'},
		{type: 'string', name: 'apellido'},
		{type: 'string', name: 'correo'},
		{type: 'string', name: 'password'},
		{type: 'string', name: 'estado'}
	]
});

Ext.define('modelRoles', {
	extend: 'Ext.data.Model',
	proxy : {
		type : 'ajax',
		//actionMethods : 'POST',
		//url : '/roles', //application/controllers/Habitacion.php
		
		api: {
                read: '/roles/view',
                create: '/roles/create',
                save: '/roles/update',
                destroy: '/roles/destroy'
		},
	
		reader: {
				
                type: 'json',
                successProperty: 'success',
                root: 'roles',
                messageProperty: 'message'
            },
		writer: {
			type: 'json',
			writeAllFields: false,
			root: 'rol'
		},
		
	},
	
	fields: [
		{type: 'int' , name: 'idRol'},
		{type: 'string', name: 'nombreRol'},
		{type: 'string', name: 'descripRol'}
			]
});

Ext.define('modelFases', {
	extend: 'Ext.data.Model',
	proxy : {
		type : 'ajax',
		//actionMethods : 'POST',
		//url : '/roles', //application/controllers/Habitacion.php
		
		api: {
			read: '/fases/view',
			create: '/fases/create',
			save: '/fases/update',
			destroy: '/fases/destroy'
		},
		reader: {				
			type: 'json',
			successProperty: 'success',
			root: 'fases',
			messageProperty: 'message'
		},
		writer: {
			type: 'json',
			writeAllFields: false,
			root: 'fase'
		},
	},
	fields: [
		{type: 'int' , name: 'idFase'},
		{type: 'string', name: 'nombreFase'},
		{type: 'string', name: 'descripFase'},
		{type: 'string', name: 'inicioFase'},
		{type: 'string', name: 'finFase'},
		{type: 'string', name: 'observFase'},
		{type: 'string', name: 'estadoFase'},
		{type: 'string', name: 'ordenFase'}
		]
});

Ext.define('ProyectoLiveSearchGridPanel', {
    extend: 'Ext.ux.LiveSearchGridPanel',
    
    initComponent: function() {
        
        //Ext.Msg.alert('Estoy en el initComponet del live!!!');
        var me = this;
        me.tbar = ['Buscar',{
                 xtype: 'textfield',
                 name: 'searchField',
                 hideLabel: true,
                 width: 200,
                 listeners: {
                     change: {
                         fn: me.onTextFieldChange,
                         scope: this,
                         buffer: 100
                     }
                 }
            }, {
                xtype: 'button',
                text: '<',
                tooltip: 'Anterior',
                handler: me.onPreviousClick,
                scope: me
            },{
                xtype: 'button',
                text: '>',
                tooltip: 'Siguiente',
                handler: me.onNextClick,
                scope: me
            }, '-', {
                xtype: 'checkbox',
                hideLabel: true,
                margin: '0 0 0 4px',
                handler: me.regExpToggle,
                scope: me                
            }, 'Expresión Regular', {
                xtype: 'checkbox',
                hideLabel: true,
                margin: '0 0 0 4px',
                handler: me.caseSensitiveToggle,
                scope: me
            }, 'Detectar Mayúsculas'];
        
        me.callParent(arguments);
    }
});

Ext.define('App.view.GesProyectos', {
	extend: 'Ext.panel.Panel',
    alias: 'widget.tabfirst',
    title: 'Administación de Proyectos',
	layout:'anchor',
	
	initComponent: function () {
		//para que funcionen los toolTips
        Ext.QuickTips.init();
        
        this.StoreProyectos = Ext.create('Ext.data.Store', {
			model : 'modelProyectos',
			autoLoad : true
		});
		
		this.autorizacionesJson = null;
		
		//hacemos la llamada ajax para obtener la autorizacion de funcionalidades de proyecto
		Ext.Ajax.request(
		{
			url:'/autorizacion/admGesProyectos',
			//form:"[STICK FORM ID HERE]",
			method:'GET',
			scope : this,
			//params: { idTipoItem: idTipoItemEnviar},
			//async: false,
			
			async    : false,
			callback : function(opts, success, response) {
				
				console.log('respuesta en callBack!!!!!!');	
				obj = Ext.decode(response.responseText);
				console.log('probando un key nulllllll');
				console.log(obj.autorizacionesJson.hollaaaa);
				this.autorizacionesJson = obj.autorizacionesJson;
				
			}
			
		});
		
		this.TblGridProyectoEdit_proyectos = Ext.create('Ext.toolbar.Toolbar',{
			defaults: { hidden: true },
			items : 
			[
				{
					xtype : 'button',
					id : 'btn_grid_editar_proyecto',
					itemId : 'btn_grid_editar_proyecto',
					text : 'Editar Registro',
					iconCls : 'icon_btn_grid_editar_proyecto',
					disabled : true,
					tooltip : 'Editar el proyecto seleccionado',
					scope : this,
					handler : this.EditRecordSelect,
					hidden: this.autorizacionesJson.EDICION_PROYECTO
				},
				{
					xtype : 'tbseparator'
				},
				{
					xtype : 'button',
					id : 'btn_grid_anular_proyecto',
					itemId : 'btn_grid_anular_proyecto',
					text : 'Anular Proyecto',
					iconCls : 'icon_btn_grid_anular',
					disabled : true,
					tooltip : 'Anular el proyecto seleccionado',
					scope : this,
					handler : this.AnularRecordSelect,
					hidden: this.autorizacionesJson.ANULACION_PROYECTO
				},{
					xtype : 'tbseparator'
				},{
					xtype : 'button',
					id : 'btn_grid_iniciar_proyecto',
					itemId : 'btn_grid_iniciar_proyecto',
					text : 'Iniciar Proyecto',
					iconCls : 'icon_btn_grid_iniciar',
					disabled : true,
					tooltip : 'Iniciar el proyecto seleccionado',
					scope : this,
					handler : this.IniciarRecordSelect,
					hidden: this.autorizacionesJson.INICIACION_PROYECTO
				},{
					xtype : 'tbseparator'
				},{
					xtype : 'button',
					id : 'btn_grid_finalizar_proyecto',
					itemId : 'btn_grid_finalizar_proyecto',
					text : 'Finalizar Proyecto',
					iconCls : 'icon_btn_grid_finalizar',
					disabled : true,
					tooltip : 'Finalizar el proyecto seleccionado',
					scope : this,
					handler : this.FinalizarRecordSelect,
					hidden: this.autorizacionesJson.FINALIZACION_PROYECTO
				}
			]
		});
		
		this.TblGridGestion = Ext.create('Ext.toolbar.Toolbar',{
			items : 
			[
				{
					xtype : 'button',
					id : 'btn_grid_gestion_fase',
					itemId : 'btn_grid_gestion_fase',
					text : 'Gestion Fase',
					iconCls : 'icon_btn_grid_gestion_fase',
					disabled : true,
					tooltip : 'Administrar las Fases del Proyecto',
					scope : this,
					handler : this.GesFaseRecordSelect
				},
				{
					xtype : 'tbseparator'
				},
				{
					xtype : 'button',
					id : 'btn_grid_gestion_tipo_item',
					itemId : 'btn_grid_gestion_tipo_item',
					text : 'Gestion Tipo Item',
					iconCls : 'icon_btn_grid_gestion_tipo_item',
					disabled : true,
					tooltip : 'Gestionar los Tipos Items del Proyecto',
					scope : this,
					handler : this.GesTipoItemRecordSelect
				},
				{
					xtype : 'tbseparator'
				},
				{
					xtype : 'button',
					id : 'btn_grid_gestion_miembro',
					itemId : 'btn_grid_gestion_miembro',
					text : 'Gestion Miembro',
					iconCls : 'icon_btn_grid_gestion_miembro',
					disabled : true,
					tooltip : 'Gestionar los Miembros para el Proyecto',
					scope : this,
					handler : this.GesMiembroRecordSelect
				}
				
			]
		});
		
		
		this.GridProyectos = Ext.create(/*'Ext.grid.Panel'*/'ProyectoLiveSearchGridPanel',{
			title : 'Lista de Proyectos',
			frame : true,
			store : this.StoreProyectos,
			stripeRows : true,
			columnLines: true,
			loadMask : true,
			//width : 550,
			//height : 400,
			dockedItems : [this.TblGridProyectoEdit_proyectos,this.TblGridGestion,
				Ext.create('Ext.ux.StatusBar', {
				defaultText: this.defaultStatusText,
				name: 'searchStatusBar'
				})
			],
			//flex:4,
			//x:250,
			//y:100,
			anchor: '100% 90%', 
			//plugins: [new Ext.ux.grid.GridHeaderFilters()],
			columns : 
			[
				Ext.create('Ext.grid.RowNumberer'),
				{
					text : "idProyecto",
					dataIndex : 'idProyecto',
					hidden : true
				},
				{ 
					text : "Proyecto",
					dataIndex : "nombreProyecto",
					sortable : false,
					resizable : false,
					width : 150
				},
				{
					text : "Descripción",
					dataIndex : "descripProyecto",
					sortable : false,
					resizable : false,
					width : 200
				},
				{
					text : "Fecha de Inicio",
					dataIndex : "fecIniProyecto",
					sortable : false,
					resizable : false,
					width : 100
				},
				{
					text : "Estado",
					dataIndex : "estado",
					sortable : false,
					resizable : false,
					width : 200
				}
				
			],
			listeners : {
				scope : this, //El ámbito de aplicación (la referencia) en el que se ejecuta el controlador.
				'selectionchange': function(view, records) {
					//Activar los botones del DataGrid
					//ultima vez q modifico
					//para probar
					if (this.GridProyectos.getSelectionModel().getSelection()[0] != null){
						if (this.GridProyectos.getSelectionModel().getSelection()[0].data.estado == 'PENDIENTE'){
							this.GridProyectos.down('#btn_grid_editar_proyecto').setDisabled(!records.length);
							this.GridProyectos.down('#btn_grid_anular_proyecto').setDisabled(!records.length);
							this.GridProyectos.down('#btn_grid_iniciar_proyecto').setDisabled(!records.length);
							this.GridProyectos.down('#btn_grid_finalizar_proyecto').setDisabled(records.length);
							this.GridProyectos.down('#btn_grid_gestion_fase').setDisabled(!records.length);
							this.GridProyectos.down('#btn_grid_gestion_tipo_item').setDisabled(!records.length);
							this.GridProyectos.down('#btn_grid_gestion_miembro').setDisabled(!records.length);

						}
						else if (this.GridProyectos.getSelectionModel().getSelection()[0].data.estado == 'ANULADO'){
							this.GridProyectos.down('#btn_grid_editar_proyecto').setDisabled(records.length);
							this.GridProyectos.down('#btn_grid_anular_proyecto').setDisabled(records.length);
							this.GridProyectos.down('#btn_grid_iniciar_proyecto').setDisabled(records.length);
							this.GridProyectos.down('#btn_grid_finalizar_proyecto').setDisabled(records.length);
							this.GridProyectos.down('#btn_grid_gestion_fase').setDisabled(records.length);
							this.GridProyectos.down('#btn_grid_gestion_tipo_item').setDisabled(records.length);
							this.GridProyectos.down('#btn_grid_gestion_miembro').setDisabled(records.length);

						}
						else if (this.GridProyectos.getSelectionModel().getSelection()[0].data.estado == 'ACTIVO'){
							this.GridProyectos.down('#btn_grid_finalizar_proyecto').setDisabled(!records.length);
							this.GridProyectos.down('#btn_grid_editar_proyecto').setDisabled(records.length);
							this.GridProyectos.down('#btn_grid_anular_proyecto').setDisabled(records.length);
							this.GridProyectos.down('#btn_grid_iniciar_proyecto').setDisabled(records.length);
							this.GridProyectos.down('#btn_grid_gestion_fase').setDisabled(!records.length);
							this.GridProyectos.down('#btn_grid_gestion_tipo_item').setDisabled(!records.length);
							this.GridProyectos.down('#btn_grid_gestion_miembro').setDisabled(!records.length);

							
						}
						else if (this.GridProyectos.getSelectionModel().getSelection()[0].data.estado == 'FINALIZADO'){
							this.GridProyectos.down('#btn_grid_editar_proyecto').setDisabled(records.length);
							this.GridProyectos.down('#btn_grid_anular_proyecto').setDisabled(records.length);
							this.GridProyectos.down('#btn_grid_iniciar_proyecto').setDisabled(records.length);
							this.GridProyectos.down('#btn_grid_finalizar_proyecto').setDisabled(records.length);
							this.GridProyectos.down('#btn_grid_gestion_fase').setDisabled(records.length);
							this.GridProyectos.down('#btn_grid_gestion_tipo_item').setDisabled(records.length);
							this.GridProyectos.down('#btn_grid_gestion_miembro').setDisabled(records.length);

						}
					}else{
						this.GridProyectos.down('#btn_grid_editar_proyecto').setDisabled(!records.length);
						this.GridProyectos.down('#btn_grid_anular_proyecto').setDisabled(!records.length);
						this.GridProyectos.down('#btn_grid_iniciar_proyecto').setDisabled(!records.length);
						this.GridProyectos.down('#btn_grid_gestion_fase').setDisabled(!records.length);
						this.GridProyectos.down('#btn_grid_gestion_tipo_item').setDisabled(!records.length);
						this.GridProyectos.down('#btn_grid_gestion_miembro').setDisabled(!records.length);

					}
				}
			},
			bbar: Ext.create('Ext.PagingToolbar', {
				store : this.StoreProyectos,
				displayInfo : true,
				displayMsg : 'Mostrando registros {0} - {1} de {2}',
				emptyMsg : "Sin registros para mostrar"
			})	
		});
		
		this.items = [this.GridProyectos];
        this.callParent(arguments);
	},
	
	AgregarRecordSelect : function(){
		
		var dsCmbUsuarios = Ext.create('Ext.data.Store', {
			model : 'modelUsuarios',
			autoLoad : true
		});
	
		//ComboBox para mostrar usuarios disponibles
		var cmbUsuarios = Ext.create(/*'Ext.form.ComboBox'*/'Ext.ux.form.field.BoxSelect', {
						
			fieldLabel: 'Lider de Proyecto',
			name : 'cmb_usuarios',
			id: 'id_cmbx_usuarios',
			displayField: 'username',
			width: 500,
			//height: 70,
			//labelWidth: 130,
			store: dsCmbUsuarios,
			queryMode: 'local',
			emptyText: 'Seleccione el lider del proyecto',
			valueField: 'id',
			multiSelect :false,
			allowBlank : false
			
		});
		
		//Creamos el FormPanel que contendra los datos a agregar
		this.FormAddModal = Ext.create('Ext.form.Panel',{
			frame :true,
			title : 'Datos del Proyecto',
			bodyStyle :'padding:5px 5px 0',
			width : 550,
			height : 180,
			defaultType: 'textfield',
			items: [{
				fieldLabel : 'Nombre',
				id : 'nombreAdd',
				name : 'nombreAdd',
				anchor : '90%',
				allowBlank : false
				},{
				fieldLabel : 'Descripcion',
				id : 'descripAdd',
				name : 'descripAdd',
				anchor : '90%',
				hidden : false,
				allowBlank : false
			},{
				xtype : 'datefield',
				fieldLabel : 'Fecha de Inicio',
				id : 'fecIniAdd',
				name : 'fecIniAdd',
				format : 'd-F-Y',
				emptyText: 'Seleccione la Fecha de aqui -->',
				anchor : '90%',
				hidden : false,
				//inputType:'password',
				allowBlank : false
			},{
					xtype : 'fieldcontainer',
					labelStyle : 'font-weight:bold;padding:0',
					items: [
						cmbUsuarios,
					]
			}],
			buttons: [{
				text : 'Guardar',
				id : 'id_btn_add_guardar_proyecto',
				iconCls : 'icon_button_save',
				scope : this,
				handler : this.HandlerGuardarDatosProyecto
				},{
				text : 'Cancelar',
				id : 'id_btn_add_cancelar_proyecto',
				iconCls : 'icon_button_cancel',
				scope : this,
				handler : function(){
					this.WindowFormAddModal.close();
				}
			}]
		});
		//Una vez creado el FormPanel lo reseteamos
		this.FormAddModal.getForm().reset();
		//Creamos la ventana que contendra el FormaPanel creado anteriormente
		this.WindowFormAddModal = Ext.create('Ext.window.Window',{
			title : 'Agregar Nuevo Proyecto',
			bodyStyle : 'padding:10px 10px 10px 10px',
			region : 'center',
			width : 580,
			height : 230,
			modal : true,
			//resizable : false,
			draggable : false,
			closable : true,
			closeAction : 'destroy',
			items : [this.FormAddModal]
		});
		//Mostramos la ventana con el formulario de edicion y los datos del registro seleccionado
		this.WindowFormAddModal.show();
		
	},
	
	//Funcion para mostrar la ventana con el formulario de edicion
	//El formulario de edicion contiene los datos del registro seleccionado para su edicion
	EditRecordSelect : function(){
		//Creamos el FormPanel que contendra los datos a editar
		this.FormEditModal = Ext.create('Ext.form.Panel',{
			frame :true,
			title : 'Datos del Proyecto',
			bodyStyle :'padding:5px 5px 0',
			width : 550,
			height : 180,
			/*fieldDefaults: {
				msgTarget : 'side',
				labelWidth : 120,
				labelStyle : 'font-size:11px;',
				fieldStyle : 'font-size:11px;'
			},*/
			defaultType: 'textfield',
			items: [{
				//fieldLabel : 'Id Habitacion',
				id : 'idProyecto',
				name : 'idProyecto',
				anchor : '50%',
				hidden : true,
				allowBlank : false
				},{
				fieldLabel : 'Nombre del Proyecto',
				id : 'nombreProyecto',
				name : 'nombreProyecto',
				anchor : '90%',
				allowBlank : false
				},{
				fieldLabel : 'Descripción del Proyecto',
				id : 'descripProyecto',
				name : 'descripProyecto',
				anchor : '90%',
				hidden : false,
				allowBlank : false
				},{
				xtype : 'datefield',
				fieldLabel : 'Fecha de Inicio',
				id : 'fecIniProyecto',
				name : 'fecIniProyecto',
				minValue: new Date(),
				format : 'd-F-Y',
				anchor : '90%',
				hidden : false,
				allowBlank : false
			}],
			buttons: [{
				text : 'Guardar',
				id : 'id_btn_editar_guardar_proyecto',
				iconCls : 'icon_button_save',
				scope : this,
				handler : this.HandlerActualizarDatosProyecto
				},{
				text : 'Cancelar',
				id : 'id_btn_editar_cancelar_proyecto',
				iconCls : 'icon_button_cancel',
				scope : this,
				handler : function(){
				this.WindowFormEditModal.close();
				}
			}]
		});
		//Una vez creado el FormPanel lo reseteamos
		this.FormEditModal.getForm().reset();
		//Obtenemos el registro seleccionado del Grid
		registroSeleccionado = this.GridProyectos.getSelectionModel().getSelection()[0].data.idProyecto;
		
		//setamos los valores del grit a ser editados
		Ext.getCmp('idProyecto').setValue(this.GridProyectos.getSelectionModel().getSelection()[0].data.idProyecto);
		Ext.getCmp('nombreProyecto').setValue(this.GridProyectos.getSelectionModel().getSelection()[0].data.nombreProyecto),
		Ext.getCmp('descripProyecto').setValue(this.GridProyectos.getSelectionModel().getSelection()[0].data.descripProyecto),
		Ext.getCmp('fecIniProyecto').setValue(this.GridProyectos.getSelectionModel().getSelection()[0].data.fecIniProyecto),
		
		//Creamos la ventana que contendra el FormaPanel creado anteriormente
		this.WindowFormEditModal = Ext.create('Ext.window.Window',{
			title : 'Editar registro seleccionado',
			bodyStyle : 'padding:10px 10px 10px 10px',
			region : 'center',
			width : 580,
			height : 230,
			modal : true,
			//resizable : false,
			draggable : false,
			closable : true,
			closeAction : 'destroy',
			items : [this.FormEditModal]
		});
		//Mostramos la ventana con el formulario de edicion y los datos del registro seleccionado
		this.WindowFormEditModal.show();
	},
	
	AnularRecordSelect : function(){
		Ext.MessageBox.show({
			title : "Información del sistema",
			msg : "¿Realmente desea anular el Proyecto?",
			buttons : Ext.MessageBox.YESNO,
			icon : Ext.MessageBox.INFO,
			scope : this,
			fn : this.AnularRegistroSeleccionado,
			width : 400
		});
	},
	
	AnularRegistroSeleccionado : function(btn){
		if (btn == 'yes') { //btn=='yes'		
			registroSeleccionado = this.GridProyectos.getSelectionModel().getSelection()[0].data.idProyecto;
			Ext.Ajax.request({
				url : '/proyectos/anular', //application/controllers/Habitacion.php
				method : 'POST',
				scope : this,
				params : {
					param_id : registroSeleccionado
				},
				success: function(response, opts) { //success
					var obj = Ext.JSON.decode(response.responseText);
					if(obj.success==true){
						this.StoreProyectos.load();
						//this.WindowAdmUsuarios.el.unmask();
					}
					else if(obj.success==false){
						//this.WindowAdmUsuarios.el.unmask();
							Ext.MessageBox.show({
								title : "Informacion del sistema",
								msg : obj.msg,
								buttons : Ext.MessageBox.OK,
								icon : Ext.MessageBox.ERROR,
								width : 400
							});
					}
					else{
						//this.WindowAdmUsuarios.el.unmask();
						Ext.MessageBox.show({
							title : "Informacion del sistema",
							msg : "Mensaje de error alternativo",
							buttons : Ext.MessageBox.OK,
							icon : Ext.MessageBox.ERROR,
							width : 400
						});
					}
				}, //success
				failure: function(response, opts) { //failure
					//this.WindowAdmUsuarios.el.unmask();
					var obj = Ext.JSON.decode(response.responseText);
					Ext.MessageBox.show({
						title : "Informacion del sitema",
						msg : "Error de conexion al servidor de la base de datos",
						buttons : Ext.MessageBox.OK,
						icon : Ext.MessageBox.ERROR,
						width : 400
					});
				} //failure
			});
		}else{
	
		}
	},
	
	IniciarRecordSelect : function(){
		Ext.MessageBox.show({
			title : "Información del sistema",
			msg : "¿Realmente desea iniciar este Proyecto?",
			buttons : Ext.MessageBox.YESNO,
			icon : Ext.MessageBox.INFO,
			scope : this,
			fn : this.IniciarRegistroSeleccionado,
			width : 400
		});
	},
	
	IniciarRegistroSeleccionado : function(btn){
		if (btn == 'yes') { //btn=='yes'		
			registroSeleccionado = this.GridProyectos.getSelectionModel().getSelection()[0].data.idProyecto;
			Ext.Ajax.request({
				url : '/proyectos/iniciar', //application/controllers/Habitacion.php
				method : 'POST',
				scope : this,
				params : {
					param_id : registroSeleccionado
				},
				success: function(response, opts) { //success
					var obj = Ext.JSON.decode(response.responseText);
					if(obj.success==true){
						this.StoreProyectos.load();
						//this.WindowAdmUsuarios.el.unmask();
					}
					else if(obj.success==false){
						//this.WindowAdmUsuarios.el.unmask();
							Ext.MessageBox.show({
								title : "Error",
								msg : obj.msg,
								buttons : Ext.MessageBox.OK,
								icon : Ext.MessageBox.ERROR,
								width : 400
							});
					}
					else{
						//this.WindowAdmUsuarios.el.unmask();
						Ext.MessageBox.show({
							title : "Informacion del sistema",
							msg : "Mensaje de error alternativo",
							buttons : Ext.MessageBox.OK,
							icon : Ext.MessageBox.ERROR,
							width : 400
						});
					}
				}, //success
				failure: function(response, opts) { //failure
					//this.WindowAdmUsuarios.el.unmask();
					var obj = Ext.JSON.decode(response.responseText);
					Ext.MessageBox.show({
						title : "Informacion del sitema",
						msg : "Error de conexion al servidor de la base de datos",
						buttons : Ext.MessageBox.OK,
						icon : Ext.MessageBox.ERROR,
						width : 400
					});
				} //failure
			});
		}else{
	
		}
	},
	
	FinalizarRecordSelect : function(){
		Ext.MessageBox.show({
			title : "Información del sistema",
			msg : "¿Realmente desea finalizar este Proyecto?",
			buttons : Ext.MessageBox.YESNO,
			icon : Ext.MessageBox.INFO,
			scope : this,
			fn : this.FinalizarRegistroSeleccionado,
			width : 400
		});
	},
	
	FinalizarRegistroSeleccionado : function(btn){
		if (btn == 'yes') { //btn=='yes'		
			registroSeleccionado = this.GridProyectos.getSelectionModel().getSelection()[0].data.idProyecto;
			Ext.Ajax.request({
				url : '/proyectos/finalizar', //application/controllers/Habitacion.php
				method : 'POST',
				scope : this,
				params : {
					param_id : registroSeleccionado
				},
				success: function(response, opts) { //success
					var obj = Ext.JSON.decode(response.responseText);
					if(obj.success==true){
						this.StoreProyectos.load();
						//this.WindowAdmUsuarios.el.unmask();
					}
					else if(obj.success==false){
						//this.WindowAdmUsuarios.el.unmask();
							Ext.MessageBox.show({
								title : "Informacion del sistema",
								msg : obj.msg,
								buttons : Ext.MessageBox.OK,
								icon : Ext.MessageBox.ERROR,
								width : 400
							});
					}
					else{
						//this.WindowAdmUsuarios.el.unmask();
						Ext.MessageBox.show({
							title : "Informacion del sistema",
							msg : "Mensaje de error alternativo",
							buttons : Ext.MessageBox.OK,
							icon : Ext.MessageBox.ERROR,
							width : 400
						});
					}
				}, //success
				failure: function(response, opts) { //failure
					//this.WindowAdmUsuarios.el.unmask();
					var obj = Ext.JSON.decode(response.responseText);
					Ext.MessageBox.show({
						title : "Informacion del sitema",
						msg : "Error de conexion al servidor de la base de datos",
						buttons : Ext.MessageBox.OK,
						icon : Ext.MessageBox.ERROR,
						width : 400
					});
				} //failure
			});
		}else{
	
		}
	},
	
	HandlerGuardarDatosProyecto:function(){
				//Ext.Msg.alert("Info",this.FormAddModal.getForm().isValid());
		if (this.FormAddModal.getForm().isValid()){
			//Ext.Msg.alert("Info","Pasé la validación");
			
			var MyDate = new Date();
			MyDate = Ext.getCmp('fecIniAdd').getValue();
			MyDate = Ext.util.Format.date(MyDate,'d-F-Y');
			var rec = new modelProyectos({
				//idRol: Ext.getCmp('idRolAdd').getValue(),
				nombreProyecto: Ext.getCmp('nombreAdd').getValue(),
				descripProyecto: Ext.getCmp('descripAdd').getValue(),
				fecIniProyecto: MyDate//Ext.getCmp('fecIniAdd').getValue()
			});
			
			this.FormAddModal.getForm().submit({
				method : 'POST',
				//type: "json",
				url : '/proyectos/create', 
				clientValidation : true,
				scope : this,
				params : {
					id_usuario : Ext.JSON.encode(Ext.getCmp('id_cmbx_usuarios').getValue()),
					proyecto : Ext.JSON.encode(rec)
				},
				success: function(form, action){
						this.WindowFormAddModal.close();
						this.StoreProyectos.load();
				},
				failure: function(form, action){
					Ext.MessageBox.show({
						title : 'Error',
						msg : action.result.msg,
						buttons : Ext.MessageBox.OK,
						icon : Ext.MessageBox.ERROR,
						width : 350
					});
				} //End failure
			});
		}
	},
	
	HandlerActualizarDatosProyecto:function(){
		if (this.FormEditModal.getForm().isValid()){
			//Ext.Msg.alert("Info","Actualizar los datos del formulario");
			
			var MyDate = new Date();
			MyDate = Ext.getCmp('fecIniProyecto').getValue();
			MyDate = Ext.util.Format.date(MyDate,'d-F-Y');
			var rec = new modelProyectos({
				idProyecto: Ext.getCmp('idProyecto').getValue(),
				nombreProyecto: Ext.getCmp('nombreProyecto').getValue(),
				descripProyecto: Ext.getCmp('descripProyecto').getValue(),
				fecIniProyecto: MyDate//Ext.getCmp('fecIniProyecto').getValue()
			});
			
			//rec.create();
			
			//this.StoreRoles.insert(0, rec);
			//this.StoreRoles.load();
			
			this.FormEditModal.getForm().submit({
				method : 'POST',
				//type: "json",
				url : '/proyectos/update', //application/controllers/Habitacion.php
				clientValidation : true,
				scope : this,
				params : {
					proyecto : Ext.JSON.encode(rec)
					/*idRol : Ext.getCmp('idRol').getValue(),
					nombreRol : Ext.getCmp('nombreRol').getValue(),
					descripRol : Ext.getCmp('descripRol').getValue(),
					//param_descripHabitacion : Ext.getCmp('descripHabitacion').getValue()*/
				},
				success: function(form, action){
					this.WindowFormEditModal.close();
					this.StoreProyectos.load();
				},
				failure: function(form, action){
					Ext.MessageBox.show({
						title : 'Error',
						msg : action.result.msg,
						buttons : Ext.MessageBox.OK,
						icon : Ext.MessageBox.ERROR,
						width : 350
					});
				} //End failure
			});
		}
	},
	
	GesTipoItemRecordSelect : function(){
		console.log('estoy en GesTipoItemRecordSelect!!!')
		registroSeleccionado = this.GridProyectos.getSelectionModel().getSelection()[0].data.idProyecto;
		nombreProyecto = this.GridProyectos.getSelectionModel().getSelection()[0].data.nombreProyecto;
		
		var cls = "App.view.GesTipos_Items"; //+ node.raw.panel;
		var id = 'GestionTipoItem' + registroSeleccionado;//null ;//node.raw.panel;
		
		/*if( node.raw.idProyecto ){
			id = id + node.raw.idProyecto;
		}*/
		
		console.log(id);
		
		this.tabs = Ext.getCmp('tabsGlobales');
		
		var tab = this.tabs.child('#' + id);
		
		
		
		if(!tab){
			idProyectoAux = registroSeleccionado;
			nombreProyectoAux = nombreProyecto;
			//Ext.Msg.alert('Entre en el if de !tab');
			tab = this.tabs.add(Ext.create(cls, {
			    itemId: id,
			    title: 'Gestion de Tipo de Items',//node.raw.text,
			    closable: true
			}));	
		}
		this.tabs.setActiveTab(tab);
	},
	
	GesFaseRecordSelect : function(){
		console.log('estoy en GesFaseRecordSelect!!!')
		
		registroSeleccionado = this.GridProyectos.getSelectionModel().getSelection()[0].data.idProyecto;	
		nombreProyecto = this.GridProyectos.getSelectionModel().getSelection()[0].data.nombreProyecto;
		
		console.log(registroSeleccionado);
		
		var cls = "App.view.AdmFases"; //+ node.raw.panel;
		var id = 'DesarrolloFase' + registroSeleccionado;//null ;//node.raw.panel;
		
		/*if( node.raw.idProyecto ){
			id = id + node.raw.idProyecto;
		}*/
		
		console.log(id);
		
		this.tabs = Ext.getCmp('tabsGlobales');
		
		var tab = this.tabs.child('#' + id);
		
		
		
		if(!tab){
			
			//Ext.Msg.alert('Entre en el if de !tab');
			idProyectoAux = registroSeleccionado;
			nombreProyectoAux = nombreProyecto;
			
			tab = this.tabs.add(Ext.create(cls, {
			    itemId: id,
			    title: 'Gestion de Fases',//node.raw.text,
			    closable: true
			}));	
		}
		this.tabs.setActiveTab(tab);
	},
	
	GesTipoItemRecordSelect : function(){
		console.log('estoy en GesTipoItemRecordSelect!!!')
		registroSeleccionado = this.GridProyectos.getSelectionModel().getSelection()[0].data.idProyecto;
		nombreProyecto = this.GridProyectos.getSelectionModel().getSelection()[0].data.nombreProyecto;
		
		var cls = "App.view.GesTipos_Items"; //+ node.raw.panel;
		var id = 'GestionTipoItem' + registroSeleccionado;//null ;//node.raw.panel;
		
		/*if( node.raw.idProyecto ){
			id = id + node.raw.idProyecto;
		}*/
		
		console.log(id);
		
		this.tabs = Ext.getCmp('tabsGlobales');
		
		var tab = this.tabs.child('#' + id);
		
		
		
		if(!tab){
			idProyectoAux = registroSeleccionado;
			nombreProyectoAux = nombreProyecto;
			//Ext.Msg.alert('Entre en el if de !tab');
			tab = this.tabs.add(Ext.create(cls, {
			    itemId: id,
			    title: 'Gestion de Tipo de Items',//node.raw.text,
			    closable: true
			}));	
		}
		this.tabs.setActiveTab(tab);
	},
	
	GesFaseRecordSelect : function(){
		console.log('estoy en GesFaseRecordSelect!!!')
		
		registroSeleccionado = this.GridProyectos.getSelectionModel().getSelection()[0].data.idProyecto;	
		nombreProyecto = this.GridProyectos.getSelectionModel().getSelection()[0].data.nombreProyecto;
		
		console.log(registroSeleccionado);
		
		var cls = "App.view.AdmFases"; //+ node.raw.panel;
		var id = 'DesarrolloFase' + registroSeleccionado;//null ;//node.raw.panel;
		
		/*if( node.raw.idProyecto ){
			id = id + node.raw.idProyecto;
		}*/
		
		console.log(id);
		
		this.tabs = Ext.getCmp('tabsGlobales');
		
		var tab = this.tabs.child('#' + id);
		
		
		console.log(tab);
		if(!tab){
			
			//Ext.Msg.alert('Entre en el if de !tab');
			idProyectoAux = registroSeleccionado;
			nombreProyectoAux = nombreProyecto;
			
			tab = this.tabs.add(Ext.create(cls, {
			    itemId: id,
			    title: 'Gestion de Fases',//node.raw.text,
			    closable: true
			}));	
		}
		this.tabs.setActiveTab(tab);
	},
	
	GesMiembroRecordSelect: function(){
		console.log('estoy en GesMiembroRecordSelect!!!')
		
		registroSeleccionado = this.GridProyectos.getSelectionModel().getSelection()[0].data.idProyecto;	
		nombreProyecto = this.GridProyectos.getSelectionModel().getSelection()[0].data.nombreProyecto;
		
		console.log(registroSeleccionado);
		
		var cls = "App.view.GestionMiembro"; //+ node.raw.panel;
		var id = 'GestionMiembro' + registroSeleccionado;//null ;//node.raw.panel;
		
		/*if( node.raw.idProyecto ){
			id = id + node.raw.idProyecto;
		}*/
		
		console.log(id);
		
		this.tabs = Ext.getCmp('tabsGlobales');
		
		var tab = this.tabs.child('#' + id);
		
		
		
		if(!tab){
			
			//Ext.Msg.alert('Entre en el if de !tab');
			idProyectoAux = registroSeleccionado;
			nombreProyectoAux = nombreProyecto;
			
			tab = this.tabs.add(Ext.create(cls, {
			    itemId: id,
			    title: 'Gestion de Miembros',//node.raw.text,
			    closable: true
			}));	
		}
		this.tabs.setActiveTab(tab);
		
	},
	
	
	
	/*GesMiembroRecordSelect : function(){
		
		var dsCmbMiembros = Ext.create('Ext.data.Store', {
			model : 'modelUsuarios'
			//autoLoad : true
		});
		
		//ComboBox para mostrar usuarios disponibles
		var cmbMiembros = Ext.create('Ext.ux.form.field.BoxSelect', {

			fieldLabel: 'Usuarios Disponibles',
			name : 'cmb_miembro',
			id: 'id_cmbx_miembro',
			displayField: 'username',
			width: 494,
			//height: 50,
			//labelWidth: 130,
			store: dsCmbMiembros,
			queryMode: 'local',
			emptyText: 'Seleccione el Usuario para Miembro',
			valueField: 'id',
			multiSelect :true,
			allowBlank : false
			
		});
		
		//traemos los usuarios
		Ext.Ajax.request(
		{
			url:'/usuarios/verMiembros',
			//form:"[STICK FORM ID HERE]",
			method:'GET',
			scope : this,
			params: { 
				idProyecto: this.GridProyectos.getSelectionModel().getSelection()[0].data.idProyecto
			},	  
			success: function(response, opts) {
				//alert("successfull");
				obj = Ext.decode(response.responseText)
				console.log(obj.miembros)
				Ext.getCmp('id_cmbx_miembro').setValue('admin')	
				dsCmbMiembros.loadData(obj.miembros)
				
			},
			failure:function(res,opt) {
				alert("request failed");
			}
		});
		
		//Creamos el FormPanel que contendra los datos a agregar
		this.FormAddMiembroModal = Ext.create('Ext.form.Panel',{
			frame :true,
			title : 'Datos del Miembro',
			bodyStyle :'padding:5px 5px 5px 5px',
			width : 540,
			//height : 100,
			autoHeight : true,
			defaultType: 'textfield',
			items: [
				{
					xtype : 'fieldcontainer',
					labelStyle : 'font-weight:bold;padding:0',
					anchor : '90%',
					items: [
						cmbMiembros,
					]
				}
			],
			buttons: [
				{
					text : 'Guardar',
					id : 'id_btn_guardar_miembro',
					iconCls : 'icon_button_save',
					scope : this,
					handler : this.HandlerGuardarMiembro
				},{
					text : 'Cancelar',
					id : 'id_btn_cancelar_cambiar_fase',
					iconCls : 'icon_button_cancel',
					scope : this,
					handler : function(){
						this.WindowFormAddMiembroModal.close();
					}
				}
			]
		});
		//Una vez creado el FormPanel lo reseteamos
		this.FormAddMiembroModal.getForm().reset();
		
		//Creamos la ventana que contendra el FormaPanel creado anteriormente
		this.WindowFormAddMiembroModal = Ext.create('Ext.window.Window',{
			title : 'Administrar Miembro',
			bodyStyle : 'padding:10px 10px 10px 10px',
			region : 'center',
			autoWidth: true,
			//width : 700,
			//height : 155,
			autoHeight : true,
			modal : true,
			//resizable : false,
			draggable : false,
			closable : true,
			closeAction : 'destroy',
			items : [this.FormAddMiembroModal]
		});
		//Mostramos la ventana con el formulario de edicion y los datos del registro seleccionado
		this.WindowFormAddMiembroModal.show();
		
	},
	
	HandlerGuardarMiembro :function(){
		if (this.FormAddMiembroModal.getForm().isValid()){
			
			this.FormAddMiembroModal.getForm().submit({
				method : 'POST',
				//type: "json",
				url : '/usuarios/guardarMiembro', 
				clientValidation : true,
				scope : this,
				params : {
					idProyecto: this.GridProyectos.getSelectionModel().getSelection()[0].data.idProyecto,
					idsUsuarios : Ext.JSON.encode(Ext.getCmp('id_cmbx_miembro').getValue())
				},
				success: function(form, action){
					this.WindowFormAddMiembroModal.close();
					this.StoreProyectos.load(
						{
							params:{idProyecto: this.myIdProyecto}
						}
					);
				},
				failure: function(form, action){
					Ext.Msg.alert("Error",action.result);
					Ext.MessageBox.show({
						title : 'Informacion del sistema',
						msg : action.result.msg,
						buttons : Ext.MessageBox.OK,
						icon : Ext.MessageBox.ERROR,
						width : 350
					});
				} //End failure
			});
			
		}
		
	},*/
	
	/*GesMiembroRecordSelect : function(){
		
		Ext.QuickTips.init();
		
		var registroSeleccionado;
		
		this.dsCmbMiembrosAsignados = Ext.create('Ext.data.Store', {
			model : 'modelUsuarios'
			//autoLoad : true
		});
		
		//ComboBox para mostrar usuarios ya asignados
		this.cmbMiembrosAsignados = Ext.create('Ext.ux.form.field.BoxSelect', {

			fieldLabel: 'Usuarios Asignados',
			name : 'cmb_miembro_asignado',
			id: 'id_cmbx_miembro_asignado',
			displayField: 'username',
			width: 494,
			//height: 50,
			//labelWidth: 130,
			store: this.dsCmbMiembrosAsignados,
			queryMode: 'local',
			emptyText: 'Seleccione el Miembro para dar un Rol',
			valueField: 'id',
			multiSelect :false,
			allowBlank : false
			
		});
		
		
		//traemos los usuarios
		Ext.Ajax.request(
		{
			url:'/usuarios/verMiembrosAsignados',
			//form:"[STICK FORM ID HERE]",
			method:'GET',
			scope : this,
			params: { 
				idProyecto: this.GridProyectos.getSelectionModel().getSelection()[0].data.idProyecto
			},	  
			success: function(response, opts) {
				//alert("successfull");
				obj = Ext.decode(response.responseText)
				console.log(obj.miembrosAsig)
				Ext.getCmp('id_cmbx_miembro_asignado').setValue('admin')	
				this.dsCmbMiembrosAsignados.loadData(obj.miembrosAsig)
				
			},
			failure:function(res,opt) {
				alert("request failed");
			}
		});
		
		var dsCmbMiembros = Ext.create('Ext.data.Store', {
			model : 'modelUsuarios'
			//autoLoad : true
		});
		
		
		
		
		//ComboBox para mostrar usuarios disponibles
		var cmbMiembros = Ext.create('Ext.ux.form.field.BoxSelect', {

			fieldLabel: 'Usuarios Disponibles',
			name : 'cmb_miembro',
			id: 'id_cmbx_miembro',
			displayField: 'username',
			width: 494,
			//height: 50,
			//labelWidth: 130,
			store: dsCmbMiembros,
			queryMode: 'local',
			emptyText: 'Seleccione el Miembro para dar un Rol',
			valueField: 'id',
			multiSelect :false,
			allowBlank : false
			
		});
		
		//traemos los usuarios
		Ext.Ajax.request(
		{
			url:'/usuarios/verMiembros',
			//form:"[STICK FORM ID HERE]",
			method:'GET',
			scope : this,
			params: { 
				idProyecto: this.GridProyectos.getSelectionModel().getSelection()[0].data.idProyecto
			},	  
			success: function(response, opts) {
				//alert("successfull");
				obj = Ext.decode(response.responseText)
				console.log(obj.miembros)
				//Ext.getCmp('id_cmbx_miembro').setValue('admin')	
				dsCmbMiembros.loadData(obj.miembros)
				
			},
			failure:function(res,opt) {
				alert("request failed");
			}
		});
		
		var dsCmbRoles = Ext.create('Ext.data.Store', {
			model : 'modelRoles',
			autoLoad : true
		});
		
		//ComboBox para mostrar todos los roles disponibles
		var cmbRoles = Ext.create('Ext.ux.form.field.BoxSelect', {

			fieldLabel: 'Roles Disponibles',
			name : 'cmb_roles',
			id: 'id_cmbx_roles',
			displayField: 'nombreRol',
			width: 494,
			//height: 50,
			//labelWidth: 130,
			store: dsCmbRoles,
			queryMode: 'local',
			emptyText: 'Seleccione el Rol para Miembro',
			valueField: 'idRol',
			multiSelect :true,
			allowBlank : false
			
		});
		
		var dsCmbFases = Ext.create('Ext.data.Store', {
			model : 'modelFases'
			//autoLoad : true
		});
		
		//ComboBox para mostrar todas las fases disponibles del proyecto
		var cmbFases = Ext.create('Ext.ux.form.field.BoxSelect', {

			fieldLabel: 'Fases Disponibles',
			name : 'cmb_fase',
			id: 'id_cmbx_fase',
			displayField: 'nombreFase',
			width: 494,
			//height: 50,
			//labelWidth: 130,
			store: dsCmbFases,
			queryMode: 'local',
			emptyText: 'Seleccione la Fase al cual tendra el Rol',
			valueField: 'idFase',
			multiSelect :true,
			allowBlank : false
			
		});
		
		//traemos los usuarios
		Ext.Ajax.request(
		{
			url:'/fases/verFasesAsignados',
			//form:"[STICK FORM ID HERE]",
			method:'GET',
			scope : this,
			params: { 
				idProyecto: this.GridProyectos.getSelectionModel().getSelection()[0].data.idProyecto
			},	  
			success: function(response, opts) {
				//alert("successfull");
				obj = Ext.decode(response.responseText)
				console.log(obj.fases)
				Ext.getCmp('id_cmbx_fase').setValue(obj.fases)	
				dsCmbFases.loadData(obj.fases)
				
			},
			failure:function(res,opt) {
				alert("request failed");
			}
		});
		
		//Formulario para el ingreso de datos
		this.FormAddRolesModal = Ext.create('Ext.form.Panel', {
	        frame     :true,
	        title     : 'Datos del Miembro',
	        bodyStyle :'padding:5px 5px 0',
	        width     : 550,			
	        fieldDefaults: {
	            msgTarget  : 'side',
	            labelWidth : 120,
				labelStyle : 'font-size:11px;',
				fieldStyle : 'font-size:11px;'
				
	        },
	        defaultType: 'textfield',
	        items: [{
				xtype : 'fieldcontainer',
				labelStyle : 'font-weight:bold;padding:0',
				anchor : '90%',
				items: [
					cmbMiembros,
				]
			},
			{
				xtype : 'fieldcontainer',
				labelStyle : 'font-weight:bold;padding:0',
				anchor : '90%',
				items: [
					cmbRoles,
				]
			},
			{
				xtype : 'fieldcontainer',
				labelStyle : 'font-weight:bold;padding:0',
				anchor : '90%',
				items: [
					cmbFases,
				]
			}],
	
	        buttons: [{
				text : 'Nuevo',
				id   : 'id_btn_nuevo',
				iconCls : 'icon_button_add',
				handler : this.EnabledButtonsFrm
			},{
	            text : 'Guardar',
				id   : 'id_btn_guardar',
				iconCls : 'icon_button_save',
				scope   : this,
				handler : this.HandlerGuardarRolesAsignados 
	        },{
	            text : 'Cancelar',
				id   : 'id_btn_cancelar',
				iconCls : 'icon_button_cancel',
				handler : this.ButtonCancelForm
	        }]
        });
		
		//Agregamos el formulario this.frmDatosHabitacion
		this.PanelDatosMiembros = Ext.create('Ext.panel.Panel',{
			border      : false,
			bodyPadding : '10 10 10 10',
			items       : [this.FormAddRolesModal]
		});
		
		// Barra de iconos para el DataGridView de las Habitaciones
		this.TblGridMiembros = Ext.create('Ext.toolbar.Toolbar',{
			items : [
				{
					xtype     : 'tbseparator'
				},{
					xtype     : 'button',				 
					id        : 'btn_grid_editar',
					itemId    : 'btn_grid_editar',
					text      : 'Editar Registro',
					iconCls   : 'icon_btn_grid_editar',
					disabled  : true,			
					tooltip   : 'Editar el registro seleccionado',
					scope     : this,
					handler   : this.EditMiembroRecordSelect
				},{
					xtype     : 'tbseparator'
				},{
					xtype     : 'button',				 
					id        : 'btn_grid_eliminar',
					itemId    : 'btn_grid_eliminar',
					text      : 'Eliminar Registro',
					iconCls   : 'icon_btn_grid_eliminar',
					disabled  : true,			
					tooltip   : 'Eliminar el registro seleccionado',
					scope     : this,
					handler   : this.DeleteRecordSelect
				},{
					xtype     : 'tbseparator'
				}
			]
		});
		
		this.GridMiembros = Ext.create('Ext.grid.Panel',{
			title   : 'Lista de Miembros',
			frame   : true,
			store   : this.dsCmbMiembrosAsignados,
			stripeRows : true,
			columnLines: true,
			loadMask   : true,			 
			width      : 550,
        	height     : 260,
			dockedItems : [this.TblGridMiembros],
			columns : [
				Ext.create('Ext.grid.RowNumberer'),
				{
					text      : "id",
					dataIndex : 'id',
					hidden    : true
				},
				{	text      : "Username",
				    dataIndex : "username",
					sortable  : false,
					resizable : false,
					width     : 200
				},
				{	text      : "Nombre",
				    dataIndex : "nombre",
					sortable  : false,
					resizable : false,
					width     : 200
				}
			],
			listeners : {
				scope : this, //El ámbito de aplicación (la referencia) en el que se ejecuta el controlador. 
				'selectionchange': function(view, records) {
				//Activar los botones del DataGrid
				//La propiedad #btn_grid_editar corresponde al itemId asignado al item en el componente Toolbar del DataGrid
                this.GridMiembros.down('#btn_grid_editar').setDisabled(!records.length);
				this.GridMiembros.down('#btn_grid_eliminar').setDisabled(!records.length);
            	}
			},
			bbar: Ext.create('Ext.PagingToolbar', {
				 store       : dsCmbMiembros,
				 displayInfo : true,
            	 displayMsg  : 'Mostrando registros {0} - {1} de {2}',
            	 emptyMsg    : "Sin registros para mostrar"
			})
		});
		
		
		
		//Agregamos el DataGrid this.GridHabitaciones
		this.PanelGridMiembros = Ext.create('Ext.panel.Panel',{
			border      : false,
			bodyPadding : '5 10 10 10',
			items       : [this.GridMiembros]
		});
		
		//Una vez creado el FormPanel lo reseteamos
		this.FormAddRolesModal.getForm().reset();
		
		//Creamos la ventana que contendra el FormaPanel creado anteriormente
		this.WindowFormAddRolesModal = Ext.create('Ext.window.Window',{
			title : 'Administrar Asignacion de Roles',
			bodyStyle : 'padding:10px 10px 10px 10px',
			region : 'center',
			autoWidth: true,
			//width : 540,
			//height : 155,
			autoHeight : true,
			modal : true,
			//resizable : false,
			draggable : false,
			closable : true,
			closeAction : 'destroy',
			items : [this.PanelDatosMiembros,this.PanelGridMiembros]
		});
		//Mostramos la ventana con el formulario de edicion y los datos del registro seleccionado
		this.WindowFormAddRolesModal.show();
		this.DisabledButtonsFrm();
		
		
	}, //End function inicio
	
	//Funcion para desactivar los controles y los botones del formulario
	DisabledButtonsFrm : function(){ //Begin function DisabledButtonsFrm
		Ext.getCmp('id_cmbx_miembro').setDisabled(true);
		Ext.getCmp('id_cmbx_roles').setDisabled(true);
		Ext.getCmp('id_cmbx_fase').setDisabled(true);		
		Ext.getCmp('id_btn_guardar').setDisabled(true);
		Ext.getCmp('id_btn_cancelar').setDisabled(true);
	}, //End function DisabledButtonsFrm
	
	//Function para activar los controles y los botones del formulario 
	EnabledButtonsFrm : function(){ //Begin function EnabledButtonsFrm
		Ext.getCmp('id_cmbx_miembro').setDisabled(false);
		Ext.getCmp('id_cmbx_roles').setDisabled(false);
		Ext.getCmp('id_cmbx_fase').setDisabled(false);
		Ext.getCmp('id_btn_nuevo').setDisabled(true);
		Ext.getCmp('id_btn_guardar').setDisabled(false);
		Ext.getCmp('id_btn_cancelar').setDisabled(false);
	},
	
	//Funcion para el boton Cancelar del formulario
	ButtonCancelForm : function(){		
		
		//Eliminamos cualquier valor contenido en los TextBoxs
		Ext.getCmp('id_cmbx_miembro').setValue("");
		Ext.getCmp('id_cmbx_roles').setValue("");
		Ext.getCmp('id_cmbx_fase').setValue("");
		
		//Limpiar el buffer de errores de los textboxs
		Ext.getCmp('id_cmbx_miembro').clearInvalid();
		Ext.getCmp('id_cmbx_roles').clearInvalid();
		Ext.getCmp('id_cmbx_fase').clearInvalid();
		
		//Desactivar los textbox correspondientes
		Ext.getCmp('id_cmbx_miembro').setDisabled(true);
		Ext.getCmp('id_cmbx_roles').setDisabled(true);
		Ext.getCmp('id_cmbx_fase').setDisabled(true);
		
		//Botones del formulario
		Ext.getCmp('id_btn_nuevo').setDisabled(false);		
		Ext.getCmp('id_btn_guardar').setDisabled(true);
		Ext.getCmp('id_btn_cancelar').setDisabled(true);
	},
	
	HandlerGuardarRolesAsignados :function(){
		if (this.FormAddRolesModal.getForm().isValid()){
			
			this.FormAddRolesModal.getForm().submit({
				method : 'POST',
				//type: "json",
				url : '/usuarios/guardarAsignacion', 
				clientValidation : true,
				scope : this,
				params : {
					idProyecto: this.GridProyectos.getSelectionModel().getSelection()[0].data.idProyecto,
					idUsuario : Ext.JSON.encode(Ext.getCmp('id_cmbx_miembro').getValue()),
					idsRoles: Ext.JSON.encode(Ext.getCmp('id_cmbx_roles').getValue()),
					idsFases: Ext.JSON.encode(Ext.getCmp('id_cmbx_fase').getValue())
					
				},
				success: function(form, action){
					this.WindowFormAddRolesModal.close();
					this.dsCmbMiembrosAsignados.load();
					/*this.StoreProyectos.load(
						{
							params:{idProyecto: this.myIdProyecto}
						}
					);
				},
				failure: function(form, action){
					Ext.Msg.alert("Error",action.result);
					Ext.MessageBox.show({
						title : 'Informacion del sistema',
						msg : action.result.msg,
						buttons : Ext.MessageBox.OK,
						icon : Ext.MessageBox.ERROR,
						width : 350
					});
				} //End failure
			});
			
		}
		
	},*/
	
	//Funcion para mostrar la ventana con el formulario de edicion
	//El formulario de edicion contiene los datos del registro seleccionado para su edicion
	/*EditMiembroRecordSelect : function(){
		
		Ext.QuickTips.init();
		
		var registroSeleccionado;
		/*
		var dsCmbMiembrosAsignados = Ext.create('Ext.data.Store', {
			model : 'modelUsuarios'
			//autoLoad : true
		});
		
		//ComboBox para mostrar usuarios ya asignados
		var cmbMiembrosAsignados = Ext.create('Ext.ux.form.field.BoxSelect', {

			fieldLabel: 'Usuarios Asignados',
			name : 'cmb_miembro_asignado_edit',
			id: 'id_cmbx_miembro_asignado_edit',
			displayField: 'username',
			width: 494,
			//height: 50,
			//labelWidth: 130,
			store: dsCmbMiembrosAsignados,
			queryMode: 'local',
			emptyText: 'Seleccione el Miembro para dar un Rol',
			valueField: 'id',
			multiSelect :false,
			allowBlank : false
			
		});
		
		
		//traemos los usuarios
		Ext.Ajax.request(
		{
			url:'/usuarios/editarMiembrosAsignados',
			//form:"[STICK FORM ID HERE]",
			method:'GET',
			scope : this,
			params: { 
				idProyecto: this.GridProyectos.getSelectionModel().getSelection()[0].data.idProyecto
			},	  
			success: function(response, opts) {
				//alert("successfull");
				obj = Ext.decode(response.responseText)
				console.log(obj.miembrosAsig)
				Ext.getCmp('id_cmbx_miembro_asignado_edit').setValue(obj.miembrosAsig)	
				dsCmbMiembrosAsignados.loadData(obj.miembrosAsig)
				
			},
			failure:function(res,opt) {
				alert("request failed");
			}
		});
		
		var dsCmbMiembros = Ext.create('Ext.data.Store', {
			model : 'modelUsuarios'
			//autoLoad : true
		});
		
		//ComboBox para mostrar usuarios disponibles
		var cmbMiembros = Ext.create('Ext.ux.form.field.BoxSelect', {

			fieldLabel: 'Usuarios Disponibles',
			name : 'cmb_miembro_edit',
			id: 'id_cmbx_miembro_edit',
			displayField: 'username',
			width: 494,
			//height: 50,
			//labelWidth: 130,
			store: dsCmbMiembros,
			queryMode: 'local',
			emptyText: 'Seleccione el Miembro para dar un Rol',
			valueField: 'id',
			multiSelect :false,
			allowBlank : false
			
		});
		
		//traemos los usuarios
		Ext.Ajax.request(
		{
			url:'/usuarios/editarMiembrosAsignados',
			//form:"[STICK FORM ID HERE]",
			method:'GET',
			scope : this,
			params: { 
				idProyecto: this.GridProyectos.getSelectionModel().getSelection()[0].data.idProyecto,
				//idMiembro: this.GridMiembros.getSelectionModel().getSelection()[0].data.id
			},	  
			success: function(response, opts) {
				//alert("successfull");
				obj = Ext.decode(response.responseText)
				console.log(obj.miembros)
				//Ext.getCmp('id_cmbx_miembro_edit').setValue('admin')	
				dsCmbMiembros.loadData(obj.miembros)
				
			},
			failure:function(res,opt) {
				alert("request failed");
			}
		});
		
		var dsCmbRoles = Ext.create('Ext.data.Store', {
			model : 'modelRoles',
			autoLoad : true
		});
		
		//ComboBox para mostrar todos los roles disponibles
		var cmbRoles = Ext.create('Ext.ux.form.field.BoxSelect', {

			fieldLabel: 'Roles Disponibles',
			name : 'cmb_roles_edit',
			id: 'id_cmbx_roles_edit',
			displayField: 'nombreRol',
			width: 494,
			//height: 50,
			//labelWidth: 130,
			store: dsCmbRoles,
			queryMode: 'local',
			emptyText: 'Seleccione el Rol para Miembro',
			valueField: 'idRol',
			multiSelect :true,
			allowBlank : false
			
		});
		
		var dsCmbFases = Ext.create('Ext.data.Store', {
			model : 'modelFases'
			//autoLoad : true
		});
		
		//ComboBox para mostrar todas las fases disponibles del proyecto
		var cmbFases = Ext.create('Ext.ux.form.field.BoxSelect', {

			fieldLabel: 'Fases Disponibles',
			name : 'cmb_fase_edit',
			id: 'id_cmbx_fase_edit',
			displayField: 'nombreFase',
			width: 494,
			//height: 50,
			//labelWidth: 130,
			store: dsCmbFases,
			queryMode: 'local',
			emptyText: 'Seleccione la Fase al cual tendra el Rol',
			valueField: 'idFase',
			multiSelect :true,
			allowBlank : false
			
		});
		
		//traemos los usuarios
		Ext.Ajax.request(
		{
			url:'/fases/editarFasesAsignados',
			//form:"[STICK FORM ID HERE]",
			method:'GET',
			scope : this,
			params: { 
				idProyecto: this.GridProyectos.getSelectionModel().getSelection()[0].data.idProyecto,
				//idMiembro: this.GridMiembros.getSelectionModel().getSelection()[0].data.id
			},	  
			success: function(response, opts) {
				//alert("successfull");
				obj = Ext.decode(response.responseText)
				console.log(obj.fases)
				Ext.getCmp('id_cmbx_fase_edit').setValue(obj.fases)	
				dsCmbFases.loadData(obj.fases)
				
			},
			failure:function(res,opt) {
				alert("request failed");
			}
		});
		
		
		//Creamos el FormPanel que contendra los datos a editar
		this.FormEditMiembroModal = Ext.create('Ext.form.Panel',{
			/*reader : new Ext.data.JsonReader({
				model    : 'modelReadEditHabitaciones',				
				root     : 'rootHabitacion', //JSON_ENCODE desde /application/models/model_habitacion.php
			}),
			frame     :true,
	        title     : 'Datos del Miembro',
	        bodyStyle :'padding:5px 5px 0',
	        width     : 550,
			height    : 150,			
	        fieldDefaults: {
	            msgTarget  : 'side',
	            labelWidth : 120,
				labelStyle : 'font-size:11px;',
				fieldStyle : 'font-size:11px;'
				
	        },
	        defaultType: 'textfield',
							        
	        items: [{
				xtype : 'fieldcontainer',
				labelStyle : 'font-weight:bold;padding:0',
				anchor : '90%',
				items: [
					cmbMiembros,
				]
			},
			{
				xtype : 'fieldcontainer',
				labelStyle : 'font-weight:bold;padding:0',
				anchor : '90%',
				items: [
					cmbRoles,
				]
			},
			{
				xtype : 'fieldcontainer',
				labelStyle : 'font-weight:bold;padding:0',
				anchor : '90%',
				items: [
					cmbFases,
				]
			}],
			buttons: [{
	            text    : 'Guardar',
				id      : 'id_btn_editar_guardar',
				iconCls : 'icon_button_save',
				scope   : this,
				handler : this.HandlerActualizarDatosMiembro 
	        },{
	            text    : 'Cancelar',
				id      : 'id_btn_editar_cancelar',
				iconCls : 'icon_button_cancel',
				scope   : this,
				handler : function(){
					this.WindowFormEditMiembroModal.close();
				}
	        }]	
		});
		
		
		/*
		//Una vez creado el FormPanel lo reseteamos
		this.FormEditMiembroModal.getForm().reset();
		
		//Obtenemos el registro seleccionado del Grid
		registroSeleccionado = this.GridHabitaciones.getSelectionModel().getSelection()[0].data.idHabitacion;
		
		//Cargamos los datos en el Formulario
		this.FormEditMiembroModal.getForm().load({
			url      : 'readEditHabitacion', //application/controllers/Habitacion.php
			params  : {record : registroSeleccionado}, //Parametros para la consulta SQL
			success : function(form,action){				
			},
			failure : function(form, action) {
				Ext.Msg.alert("Error","Error al cargar los datos");
			}
		});
		
		//Creamos la ventana que contendra el FormaPanel creado anteriormente
		this.WindowFormEditMiembroModal = Ext.create('Ext.window.Window',{
			title       : 'Editar registro seleccionado',
			bodyStyle   : 'padding:10px 10px 10px 10px',
			region      : 'center',
			width       : 580,
			height      : 200,			
			modal       : true,
			resizable   : false,
			draggable   : false,
			closable    : true,
			closeAction : 'hide',			
			items       : [this.FormEditMiembroModal]
		});
		
		//Mostramos la ventana con el formulario de edicion y los datos del registro seleccionado
		this.WindowFormEditMiembroModal.show();
				
	},*/
	
	/*HandlerActualizarDatosMiembro:function(){
		if (this.FormEditMiembroModal.getForm().isValid()){
			//Ext.Msg.alert("Info","Actualizar los datos del formulario");
			
			this.FormEditMiembroModal.getForm().submit({
				method            : 'POST',
				url               : 'updateMiembro', //application/controllers/Habitacion.php
				clientValidation  : true,
				scope             : this,
				params : {
					idMiembro     : Ext.getCmp('id_cmbx_miembro_edit').getValue(),
					idsRoles  	  : Ext.getCmp('id_cmbx_roles_edit').getValue(),
					idsFases      : Ext.getCmp('id_cmbx_fase_edit').getValue()
				},
				success: function(form, action){
					this.WindowFormEditMiembroModal.close();
					dsCmbMiembrosAsignados.load();
				},
				failure: function(form, action){
					Ext.MessageBox.show({							
					  title   : 'Informacion del sistema', 
					  msg     : action.result.msg,
					  buttons : Ext.MessageBox.OK,
					  icon    : Ext.MessageBox.ERROR,
					  width   : 350
					}); 					
				} //End failure
				
			});
		}
		
	},*/
	

		
});
